package dieciLuglio;

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;



public class GraficaTavolo{	

	public static void main(String[]args) throws SQLException, IOException{
		//FinestraRecensioni fr=new FinestraRecensioni(1);
		FinestraScegliTavolo f= new FinestraScegliTavolo();
	}

}
class FinestraScegliTavolo extends JFrame{
	Ristorante ristorante=new Ristorante();
	int idTav=0;
	
	public FinestraScegliTavolo(){
		final JFrame fst = new JFrame();
		fst.setPreferredSize(new Dimension(300,300));
		JPanel pan=new JPanel();
		fst.add(pan);
		
		final JComboBox r=new JComboBox();
		int numTav=ristorante.getNumeroTavoli();
		int []tavoliSpenti=null;
		tavoliSpenti=ristorante.tavoliSpenti();
		
		for (int i=0;i<numTav;i++){
			if(tavoliSpenti[i]!=0){
				r.addItem(i+1);
			}
		}
		JButton selezionato=new JButton("Seleziona");
		selezionato.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				idTav=(Integer)r.getSelectedItem();
				
				//qui si apre la finestra di prima
				System.out.print("Tavolo: "+idTav);
				try {
					FinestraT ft=new FinestraT(idTav);
				} catch (SQLException e1) {
					e1.printStackTrace();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
				fst.dispose();
			}
		});
		pan.add(r);
		pan.add(selezionato);
		
		
		fst.setVisible(true);
		fst.pack();
		fst.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		
		
		
	}
	public int getId(){
		return idTav;
	}
}

class FinestraT extends JFrame{

	ImageIcon primipiatti=new ImageIcon("/Users/miku_92/Desktop/foto/primipiatti.png");
	ImageIcon secondipiatti=new ImageIcon("/Users/miku_92/Desktop/foto/secondipiatti.png");
	ImageIcon contorni=new ImageIcon("/Users/miku_92/Desktop/foto/contorni.png");
	ImageIcon dessert=new ImageIcon("/Users/miku_92/Desktop/foto/dessert.png");
	ImageIcon bibite=new ImageIcon("/Users/miku_92/Desktop/foto/bibite.png");
	ImageIcon menupronti=new ImageIcon("/Users/miku_92/Desktop/foto/menupronti.png");
	ImageIcon migliori=new ImageIcon("/Users/miku_92/Desktop/foto/migliori.png");
	ImageIcon elimina=new ImageIcon("/Users/miku_92/Desktop/foto/elimina.png");
	ImageIcon eliminatutto=new ImageIcon("/Users/miku_92/Desktop/foto/eliminatutto.png");
	ImageIcon aggiungi=new ImageIcon("/Users/miku_92/Desktop//foto/aggiungi.png");
	ImageIcon invia=new ImageIcon("/Users/miku_92/Desktop/foto/invia.png");
	ImageIcon Menu1=new ImageIcon("/Users/miku_92/Desktop/foto/Menu1.png");
	ImageIcon Menu2=new ImageIcon("/Users/miku_92/Desktop/foto/Menu2.png");
	ImageIcon Menu3=new ImageIcon("/Users/miku_92/Desktop/foto/Menu3.png");
	ImageIcon MenuR=new ImageIcon("/Users/miku_92/Desktop/foto/MenuR.png");
	ImageIcon aggiungipiatto=new ImageIcon("/Users/miku_92/Desktop/foto/aggiungipiatto.png");
	
	Tavolo t=new Tavolo(Tavolo.getIdTavolo(),0);
	Utente u;

	JLabel AccDen=new JLabel();
	
	public FinestraT(int id) throws SQLException, IOException{
		t.accendi(id);
		t.setIdTav(id);
		int q=t.getIdUtenteTavolo();
		u=new Utente(q);
		final int codiceT=id;
		
		
		
		
		
		final JFrame tavolo=new JFrame();
		tavolo.setTitle("Tavolo "+id);


		final int finale=id;
		JPanel tipoPiatti=new JPanel(new GridLayout(6,1));



	

		JButton primi=new JButton();
		primi.setIcon(primipiatti);
		primi.setFocusPainted(false);

		JButton secondi=new JButton();
		secondi.setIcon(secondipiatti);
		secondi.setFocusPainted(false);

		JButton contorni1=new JButton();
		contorni1.setIcon(contorni);
		contorni1.setFocusPainted(false);

		JButton dessert1=new JButton();
		dessert1.setIcon(dessert);
		dessert1.setFocusPainted(false);

		JButton bibite1=new JButton();
		bibite1.setIcon(bibite);
		bibite1.setFocusPainted(false);

		JButton menu=new JButton();
		menu.setIcon(menupronti);
		menu.setFocusPainted(false);


		tipoPiatti.add(primi);
		tipoPiatti.add(secondi);
		tipoPiatti.add(contorni1);
		tipoPiatti.add(dessert1);
		tipoPiatti.add(bibite1);
		tipoPiatti.add(menu);


		JPanel contenitore=new JPanel(new BorderLayout());


		JPanel pannelloComandi=new JPanel(new GridLayout(7,1));

		JPanel vuoto=new JPanel();

		JPanel vuoto1=new JPanel();
		String log="Log:";
		
		JLabel niente=new JLabel("                     ");
		JLabel AccUtente=new JLabel(log);
		AccDen.setText("non effettuato");
		vuoto1.add(niente);
		vuoto1.add(AccUtente);
		vuoto1.add(AccDen);

		JPanel vuoto2=new JPanel();

		JPanel vuoto3=new JPanel();

		JButton eliminaPiatto=new JButton();
		eliminaPiatto.setIcon(elimina);
		eliminaPiatto.setFocusPainted(false);

		JButton eliminaOrdine=new JButton();
		eliminaOrdine.setIcon(eliminatutto);
		eliminaOrdine.setFocusPainted(false);

		JButton inviaOrdine=new JButton();
		inviaOrdine.setIcon(invia);
		inviaOrdine.setFocusPainted(false);
		
		/*
		 * 
		 * 
		 * 
		 */
		JButton ute=new JButton("Entra");
		ute.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				FinestraAccesso d=new FinestraAccesso(codiceT,AccDen);
			}
		});
		
		JButton logout=new JButton("LogOut");
		logout.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				AccDen.setText("non effettuato");
				t.dissociaUtenteTavolo(codiceT);
				JOptionPane d=new JOptionPane();
	            d.showMessageDialog(null, "Logout avvenuto correttamente", "Disconnessione",  JOptionPane.INFORMATION_MESSAGE);
	            d.setVisible(true);
			}
		});
		
		/*
		 * 
		 * 
		 * 
		 * 
		 */
		
		pannelloComandi.add(vuoto3);
		pannelloComandi.add(eliminaPiatto);
		pannelloComandi.add(eliminaOrdine);
		pannelloComandi.add(inviaOrdine);
		pannelloComandi.add(vuoto1);
		pannelloComandi.add(ute);
		pannelloComandi.add(logout);


		JPanel ovest=new JPanel();

		final JPanel primiPiatti=new JPanel(new GridLayout(15,1,0,4));
		primiPiatti.setPreferredSize(new Dimension(550,1320));

		final JPanel secondiPiatti=new JPanel(new GridLayout(15,1,0,4));
		secondiPiatti.setPreferredSize(new Dimension(650,1320));

		final JPanel contorniPiatti=new JPanel(new GridLayout(15,1,0,4));
		contorniPiatti.setPreferredSize(new Dimension(650,1320));

		final JPanel dessertPiatti=new JPanel(new GridLayout(15,1,0,4));
		dessertPiatti.setPreferredSize(new Dimension(650,1320));

		final JPanel bibiteContenitore=new JPanel(new GridLayout(15,1,0,4));
		bibiteContenitore.setPreferredSize(new Dimension(650,1320));

		final JPanel menuProntiContenitore=new JPanel(new GridLayout(15,1,0,4));
		bibiteContenitore.setPreferredSize(new Dimension(650,1320));

		final JPanel conteiner=new JPanel();


		conteiner.setPreferredSize(new Dimension (550,1320));
		conteiner.add(primiPiatti);
		primiPiatti.setVisible(true);
		conteiner.add(secondiPiatti);
		secondiPiatti.setVisible(false);
		conteiner.add(contorniPiatti);
		contorniPiatti.setVisible(false);
		conteiner.add(dessertPiatti);
		dessertPiatti.setVisible(false);
		conteiner.add(bibiteContenitore);
		bibiteContenitore.setVisible(false);
		conteiner.add(menuProntiContenitore);
		menuProntiContenitore.setVisible(false);


		JScrollPane contenitorePiatti=new JScrollPane(conteiner,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		contenitorePiatti.setPreferredSize(new Dimension(580,665));

		ovest.add(contenitorePiatti);

		
		final JPanel rigaInferiore=new JPanel(new BorderLayout());
		SwingUtilities.invokeLater (new Runnable (){
	           public void run (){
	                ClockPanel clock=new ClockPanel();
	                rigaInferiore.add(clock,BorderLayout.WEST);
	            }
	        });

		 
		JPanel centro=new JPanel(new BorderLayout());

		JLabel ordinazione=new JLabel("                                                     ORDINAZIONE");

		final JTable ordine=new JTable(0,0);
		

		final DefaultTableModel modello=(DefaultTableModel)ordine.getModel();
		modello.addColumn("Nome Piatto");
		modello.addColumn("Quantita'");
		modello.addColumn("Prezzo");
		ordine.setModel(modello);
		ordine.setPreferredSize(new Dimension (400,800));
		
		
		
		
		

		JScrollPane pannelloOrdine=new JScrollPane(ordine,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		pannelloOrdine.setPreferredSize(new Dimension(400,620));

		centro.add(ordinazione,BorderLayout.NORTH);
		centro.add(pannelloOrdine,BorderLayout.CENTER);
		centro.setPreferredSize(new Dimension(400,600));

	
		JPanel centro1=new JPanel();
		centro1.add(centro);

		contenitore.add(ovest,BorderLayout.WEST);
		contenitore.add(pannelloComandi,BorderLayout.EAST);
		contenitore.add(rigaInferiore,BorderLayout.SOUTH);
		contenitore.add(centro1,BorderLayout.CENTER);
		pannelloComandi.setPreferredSize(new Dimension(100,500));

		JPanel[]primiPiatti1=new JPanel[15];
		for(int i=0;i<primiPiatti1.length;i++){
			primiPiatti1[i]=new JPanel(new BorderLayout());
			primiPiatti.add(primiPiatti1[i]);
		}

		JPanel[]secondiPiatti1=new JPanel[15];
		for(int i=0;i<secondiPiatti1.length;i++){
			secondiPiatti1[i]=new JPanel(new BorderLayout());
			secondiPiatti.add(secondiPiatti1[i]);
		}

		JPanel[]contorniPiatti1=new JPanel[15];
		for(int i=0;i<contorniPiatti1.length;i++){
			contorniPiatti1[i]=new JPanel(new BorderLayout());
			contorniPiatti.add(contorniPiatti1[i]);
		}

		JPanel[]dessertPiatti1=new JPanel[15];
		for(int i=0;i<dessertPiatti1.length;i++){
			dessertPiatti1[i]=new JPanel(new BorderLayout());
			dessertPiatti.add(dessertPiatti1[i]);
		}

		JPanel[]bibiteContenitore1=new JPanel[15];
		for(int i=0;i<bibiteContenitore1.length;i++){
			bibiteContenitore1[i]=new JPanel(new BorderLayout());
			bibiteContenitore.add(bibiteContenitore1[i]);
		}

		JPanel[]menuProntiContenitore1=new JPanel[15];
		for(int i=0;i<menuProntiContenitore1.length;i++){
			menuProntiContenitore1[i]=new JPanel(new BorderLayout());
			menuProntiContenitore.add(menuProntiContenitore1[i]);
		}






		JButton [] primiPiatti2=new JButton[t.contaPiatto("Primo")];
		JLabel [] prezziPrimi=new JLabel[primiPiatti2.length];

		JButton [] val=new JButton[primiPiatti2.length];
		JButton [] desc=new JButton[primiPiatti2.length];
		
		
		JPanel [] contenitoreDescrizioni=new JPanel[prezziPrimi.length];
		for(int i=0;i<contenitoreDescrizioni.length;i++){
			contenitoreDescrizioni[i]=new JPanel();
		}
		/*
		JScrollPane [] scrollDescrizioni=new JScrollPane[descrizioniPrimi.length];
		*/
		
		JLabel [] foto=new JLabel[primiPiatti2.length];
		LinkedList<Alimento> listaprimi=t.datiPiatti("Primo");
		for(int i=0;i<primiPiatti2.length;i++){
			Alimento a=listaprimi.getFirst();
			final int ides=a.getCodice();//codice per la descrizione
			val[i]=new JButton("Recensioni");
			desc[i]=new JButton("   Descrizione Piatto   ");
			
			primiPiatti2[i]=new JButton(a.getNome());
			primiPiatti2[i].setPreferredSize(new Dimension(180,80));


			primiPiatti2[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent arg0){
					JButton b=(JButton)arg0.getSource();
					String nome=b.getText();
					System.out.println("AAAAAAAAAAA"+nome+"AAAAAAAAAA");
					Alimento a=new Alimento(nome);
					t.aggiungiAlimento(a);
					int quantiPresenti=t.contaPresenze(a);
					if(quantiPresenti>1){
						int r=rigaDaAggiornare(modello,nome);
						modello.removeRow(r);
						Object [] nuovaRiga={a.getNome(),quantiPresenti,a.getPrezzo()*quantiPresenti};
						modello.addRow(nuovaRiga);
						
					}
					else{
						Object [] riga={a.getNome(),1,a.getPrezzo()};
						modello.addRow(riga);
					}
					System.out.println("Hai inserito :"+nome);
					
					
				}
			});
			desc[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					FinestraDescrizione fd=new FinestraDescrizione(ides);
				}
			});
			val[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					FinestraRecensioni fr=new FinestraRecensioni(ides);
				}
			});

			foto[i]=new JLabel(new ImageIcon(a.getFoto()));
			
			prezziPrimi[i]=new JLabel("Prezzo:"+a.getPrezzo());
			/*
			scrollDescrizioni[i]=new JScrollPane(descrizioniPrimi[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			*/
			contenitoreDescrizioni[i].add(prezziPrimi[i]);
			contenitoreDescrizioni[i].add(val[i]);
			contenitoreDescrizioni[i].add(desc[i]);
			
			
			
			primiPiatti1[i].add(primiPiatti2[i],BorderLayout.WEST);
			primiPiatti1[i].add(foto[i],BorderLayout.CENTER);
			primiPiatti1[i].add(contenitoreDescrizioni[i],BorderLayout.EAST);
			contenitoreDescrizioni[i].setPreferredSize(new Dimension(220,80));
			//scrollDescrizioni[i].setPreferredSize(new Dimension(220,80));
			listaprimi.removeFirst();


		}





		JButton [] secondiPiatti2=new JButton[t.contaPiatto("Secondo")];
		JTextArea [] descrizioniSecondi=new JTextArea[secondiPiatti2.length];


		JPanel [] contenitoreDescrizioni2=new JPanel[descrizioniSecondi.length];
		for(int i=0;i<contenitoreDescrizioni2.length;i++){
			contenitoreDescrizioni2[i]=new JPanel();
		}
		JScrollPane [] scrollDescrizioni2=new JScrollPane[descrizioniSecondi.length];
		JLabel [] foto2=new JLabel[secondiPiatti2.length];
		LinkedList<Alimento> listaSecondi=t.datiPiatti("Secondo");
		for(int i=0;i<secondiPiatti2.length;i++){
			Alimento a=listaSecondi.getFirst();


			secondiPiatti2[i]=new JButton(a.getNome());
			secondiPiatti2[i].setPreferredSize(new Dimension(250,80));


			secondiPiatti2[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent arg0){
					JButton b=(JButton)arg0.getSource();
					String nome=b.getText();
					Alimento a=new Alimento(nome);
					t.aggiungiAlimento(a);
					int quantiPresenti=t.contaPresenze(a);
					if(quantiPresenti>1){
						int r=rigaDaAggiornare(modello,nome);
						modello.removeRow(r);
						Object [] nuovaRiga={a.getNome(),quantiPresenti,a.getPrezzo()*quantiPresenti};
						modello.addRow(nuovaRiga);
						
					}
					else{
						Object [] riga={a.getNome(),1,a.getPrezzo()};
						modello.addRow(riga);
					}
					System.out.println("Hai inserito :"+nome);
					
					
				}
			});


			foto2[i]=new JLabel(new ImageIcon(a.getFoto()));
			
			
			
			descrizioniSecondi[i]=new JTextArea("Prezzo:"+a.getPrezzo()+"\n"+a.getDescrizione());
			scrollDescrizioni2[i]=new JScrollPane(descrizioniSecondi[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			contenitoreDescrizioni2[i].add(scrollDescrizioni2[i]);
			secondiPiatti1[i].add(secondiPiatti2[i],BorderLayout.WEST);
			secondiPiatti1[i].add(foto2[i],BorderLayout.CENTER);
			secondiPiatti1[i].add(contenitoreDescrizioni2[i],BorderLayout.EAST);
			contenitoreDescrizioni2[i].setPreferredSize(new Dimension(220,80));
			scrollDescrizioni2[i].setPreferredSize(new Dimension(220,80));
			listaSecondi.removeFirst();


		}




		JButton [] DessertPiatti2=new JButton[t.contaPiatto("Dessert")];
		JTextArea [] descrizioniDessert=new JTextArea[DessertPiatti2.length];


		JPanel [] contenitoreDescrizioni3=new JPanel[descrizioniDessert.length];
		for(int i=0;i<contenitoreDescrizioni3.length;i++){
			contenitoreDescrizioni3[i]=new JPanel();

		}
		JScrollPane [] scrollDescrizioni3=new JScrollPane[descrizioniDessert.length];
		JLabel [] foto3=new JLabel[DessertPiatti2.length];
		LinkedList<Alimento> listaDessert=t.datiPiatti("Dessert");
		for(int i=0;i<DessertPiatti2.length;i++){
			Alimento a=listaDessert.getFirst();



			DessertPiatti2[i]=new JButton(a.getNome());
			DessertPiatti2[i].setPreferredSize(new Dimension(250,80));


			DessertPiatti2[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent arg0){
					JButton b=(JButton)arg0.getSource();
					String nome=b.getText();
					Alimento a=new Alimento(nome);
					t.aggiungiAlimento(a);
					int quantiPresenti=t.contaPresenze(a);
					if(quantiPresenti>1){
						int r=rigaDaAggiornare(modello,nome);
						modello.removeRow(r);
						Object [] nuovaRiga={a.getNome(),quantiPresenti,a.getPrezzo()*quantiPresenti};
						modello.addRow(nuovaRiga);
						
					}
					else{
						Object [] riga={a.getNome(),1,a.getPrezzo()};
						modello.addRow(riga);
					}
					System.out.println("Hai inserito :"+nome);
					
					
				}
			});


			
			foto3[i]=new JLabel(new ImageIcon(a.getFoto()));
			descrizioniDessert[i]=new JTextArea("Prezzo:"+a.getPrezzo()+"\n"+a.getDescrizione());
			scrollDescrizioni3[i]=new JScrollPane(descrizioniDessert[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			contenitoreDescrizioni3[i].add(scrollDescrizioni3[i]);
			dessertPiatti1[i].add(DessertPiatti2[i],BorderLayout.WEST);
			dessertPiatti1[i].add(foto3[i],BorderLayout.CENTER);
			dessertPiatti1[i].add(contenitoreDescrizioni3[i],BorderLayout.EAST);
			contenitoreDescrizioni3[i].setPreferredSize(new Dimension(220,80));
			scrollDescrizioni3[i].setPreferredSize(new Dimension(220,80));
			listaDessert.removeFirst();


		}





		JButton [] ContorniPiatti2=new JButton[t.contaPiatto("Contorno")];
		JTextArea [] descrizioniContorni=new JTextArea[ContorniPiatti2.length];


		JPanel [] contenitoreDescrizioni4=new JPanel[descrizioniContorni.length];
		for(int i=0;i<contenitoreDescrizioni4.length;i++){
			contenitoreDescrizioni4[i]=new JPanel();

		}
		
		JScrollPane [] scrollDescrizioni4=new JScrollPane[descrizioniContorni.length];
		JLabel [] foto4=new JLabel[ContorniPiatti2.length];
		LinkedList<Alimento> listaContorni=t.datiPiatti("Contorno");
		for(int i=0;i<ContorniPiatti2.length;i++){
			Alimento a=listaContorni.getFirst();



			ContorniPiatti2[i]=new JButton(a.getNome());
			ContorniPiatti2[i].setPreferredSize(new Dimension(250,80));


			ContorniPiatti2[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent arg0){
					JButton b=(JButton)arg0.getSource();
					String nome=b.getText();
					Alimento a=new Alimento(nome);
					t.aggiungiAlimento(a);
					int quantiPresenti=t.contaPresenze(a);
					if(quantiPresenti>1){
						int r=rigaDaAggiornare(modello,nome);
						modello.removeRow(r);
						Object [] nuovaRiga={a.getNome(),quantiPresenti,a.getPrezzo()*quantiPresenti};
						modello.addRow(nuovaRiga);
						
					}
					else{
						Object [] riga={a.getNome(),1,a.getPrezzo()};
						modello.addRow(riga);
					}
					System.out.println("Hai inserito :"+nome);
					
					
				}
			});


			
			foto4[i]=new JLabel(new ImageIcon(a.getFoto()));
			descrizioniContorni[i]=new JTextArea("Prezzo:"+a.getPrezzo()+"\n"+a.getDescrizione());
			scrollDescrizioni4[i]=new JScrollPane(descrizioniContorni[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			contenitoreDescrizioni4[i].add(scrollDescrizioni4[i]);
			contorniPiatti1[i].add(ContorniPiatti2[i],BorderLayout.WEST);
			contorniPiatti1[i].add(foto4[i],BorderLayout.CENTER);
			contorniPiatti1[i].add(contenitoreDescrizioni4[i],BorderLayout.EAST);
			contenitoreDescrizioni4[i].setPreferredSize(new Dimension(220,80));
			scrollDescrizioni4[i].setPreferredSize(new Dimension(220,80));
			listaContorni.removeFirst();


		}


		JButton [] BibitePiatti2=new JButton[t.contaPiatto("Bibite")];
		JTextArea [] descrizioniBib=new JTextArea[BibitePiatti2.length];


		JPanel [] contenitoreDescrizioni5=new JPanel[descrizioniBib.length];
		for(int i=0;i<contenitoreDescrizioni5.length;i++){
			contenitoreDescrizioni5[i]=new JPanel();
		}
		
		JScrollPane [] scrollDescrizioni5=new JScrollPane[descrizioniBib.length];
		JLabel [] foto5=new JLabel[BibitePiatti2.length];
		LinkedList<Alimento> listaBibite=t.datiPiatti("Bibite");
		for(int i=0;i<BibitePiatti2.length;i++){
			Alimento a=listaBibite.getFirst();

			BibitePiatti2[i]=new JButton(a.getNome());
			BibitePiatti2[i].setPreferredSize(new Dimension(250,80));


			BibitePiatti2[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent arg0){
					JButton b=(JButton)arg0.getSource();
					String nome=b.getText();
					Alimento a=new Alimento(nome);
					t.aggiungiAlimento(a);
					int quantiPresenti=t.contaPresenze(a);
					if(quantiPresenti>1){
						int r=rigaDaAggiornare(modello,nome);
						modello.removeRow(r);
						Object [] nuovaRiga={a.getNome(),quantiPresenti,a.getPrezzo()*quantiPresenti};
						modello.addRow(nuovaRiga);
						
					}
					else{
						Object [] riga={a.getNome(),1,a.getPrezzo()};
						modello.addRow(riga);
					}
					System.out.println("Hai inserito :"+nome);
					
					
				}
			});



			foto5[i]=new JLabel(new ImageIcon(a.getFoto()));
			descrizioniBib[i]=new JTextArea("Prezzo:"+a.getPrezzo()+"\n"+a.getDescrizione());
			scrollDescrizioni5[i]=new JScrollPane(descrizioniBib[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			contenitoreDescrizioni5[i].add(scrollDescrizioni5[i]);
			bibiteContenitore1[i].add(BibitePiatti2[i],BorderLayout.WEST);
			bibiteContenitore1[i].add(foto5[i],BorderLayout.CENTER);
			bibiteContenitore1[i].add(contenitoreDescrizioni5[i],BorderLayout.EAST);
			contenitoreDescrizioni5[i].setPreferredSize(new Dimension(220,80));
			scrollDescrizioni5[i].setPreferredSize(new Dimension(220,80));
			listaBibite.removeFirst();
		}
		
		
		
		
		JButton [] Menu=new JButton[t.contaQuantiMenu()+1];
		JTextArea [] descrizioneMenu=new JTextArea[Menu.length];
		
		JPanel [] contenitoreDescrizioniMenu=new JPanel[descrizioneMenu.length];
		for(int i=0;i<contenitoreDescrizioniMenu.length;i++){
			contenitoreDescrizioniMenu[i]=new JPanel();
		}
		
		
		JScrollPane [] scrollDescrizioniMenu=new JScrollPane[descrizioneMenu.length];
		JLabel [] foto6=new JLabel[Menu.length];
		
		for(int i=0;i<Menu.length-1;i++){
			final Menu m=new Menu(i+1);


			Menu[i]=new JButton(m.getNome());
			Menu[i].setPreferredSize(new Dimension(250,80));

			Menu[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					JButton a=(JButton)e.getSource();
					String nomeMenu=a.getText();
					t.CostruisciMenu(nomeMenu);

					LinkedList<Alimento>p=m.componentiM();
					Iterator<Alimento> it=p.iterator();
					while(it.hasNext()){
						Alimento z=it.next();
						int quantiPresenti=t.contaPresenze(z);
						if(quantiPresenti>1){
							int r=rigaDaAggiornare(modello,z.getNome());
							modello.removeRow(r);
							Object [] nuovaRiga={z.getNome(),quantiPresenti,z.getPrezzo()*quantiPresenti};
							modello.addRow(nuovaRiga);

						}
						else{
							Object [] riga={z.getNome(),1,z.getPrezzo()};
							modello.addRow(riga);
						}
					}	

				}
			});

			foto6[0]=new JLabel(Menu1);
			foto6[1]=new JLabel(Menu2);
			foto6[2]=new JLabel(Menu3);
			
			
			String descrizione=m.getDescrizione();
			
			descrizioneMenu[i]=new JTextArea(descrizione);
			scrollDescrizioniMenu[i]=new JScrollPane(descrizioneMenu[i],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			contenitoreDescrizioniMenu[i].add(scrollDescrizioniMenu[i]);
			menuProntiContenitore1[i].add(Menu[i],BorderLayout.WEST);
			menuProntiContenitore1[i].add(foto6[i],BorderLayout.CENTER);
			menuProntiContenitore1[i].add(contenitoreDescrizioniMenu[i],BorderLayout.EAST);
			contenitoreDescrizioniMenu[i].setPreferredSize(new Dimension(220,80));
			scrollDescrizioniMenu[i].setPreferredSize(new Dimension(220,80));
			
			
			
		}
		
		
		
		int ultimaPos=t.contaQuantiMenu();
		Menu[ultimaPos]=new JButton("Menu Random");
		Menu[ultimaPos].setPreferredSize(new Dimension(250,80));

		Menu[ultimaPos].addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){


				LinkedList<Alimento>p=t.RandomMenu();
				Iterator<Alimento> it=p.iterator();

				while(it.hasNext()){
					Alimento z=it.next();
					int quantiPresenti=t.contaPresenze(z);
					if(quantiPresenti>1){
						int [] r=rigaDaAggiornarePerRandom(modello,z.getNome());
						int i=0;
						while(r[i]!=-1 && i<2){
							modello.removeRow(r[i]);
							Object [] nuovaRiga={z.getNome(),quantiPresenti,z.getPrezzo()*quantiPresenti};
							modello.addRow(nuovaRiga);
							i++;
						}
					}
					else{
						Object [] riga={z.getNome(),1,z.getPrezzo()};
						modello.addRow(riga);
					}
				}
			} 
		});


		foto6[ultimaPos]=new JLabel(MenuR);


		descrizioneMenu[ultimaPos]=new JTextArea("???");
		scrollDescrizioniMenu[ultimaPos]=new JScrollPane(descrizioneMenu[ultimaPos],JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		contenitoreDescrizioniMenu[ultimaPos].add(scrollDescrizioniMenu[ultimaPos]);
		menuProntiContenitore1[ultimaPos].add(Menu[ultimaPos],BorderLayout.WEST);
		menuProntiContenitore1[ultimaPos].add(foto6[ultimaPos],BorderLayout.CENTER);
		menuProntiContenitore1[ultimaPos].add(contenitoreDescrizioniMenu[ultimaPos],BorderLayout.EAST);
		contenitoreDescrizioniMenu[ultimaPos].setPreferredSize(new Dimension(220,80));
		scrollDescrizioniMenu[ultimaPos].setPreferredSize(new Dimension(220,80));
		
		


		primi.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(true);
				secondiPiatti.setVisible(false);
				contorniPiatti.setVisible(false);
				dessertPiatti.setVisible(false);
				bibiteContenitore.setVisible(false);
				menuProntiContenitore.setVisible(false);

			}
		});
		secondi.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(false);
				secondiPiatti.setVisible(true);
				contorniPiatti.setVisible(false);
				dessertPiatti.setVisible(false);
				bibiteContenitore.setVisible(false);
				menuProntiContenitore.setVisible(false);

			}
		});
		dessert1.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(false);
				secondiPiatti.setVisible(false);
				contorniPiatti.setVisible(false);
				dessertPiatti.setVisible(true);
				bibiteContenitore.setVisible(false);
				menuProntiContenitore.setVisible(false);

			}
		});
		contorni1.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(false);
				secondiPiatti.setVisible(false);
				contorniPiatti.setVisible(true);
				dessertPiatti.setVisible(false);
				bibiteContenitore.setVisible(false);
				menuProntiContenitore.setVisible(false);

			}
		});
		bibite1.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(false);
				secondiPiatti.setVisible(false);
				contorniPiatti.setVisible(false);
				dessertPiatti.setVisible(false);
				bibiteContenitore.setVisible(true);
				menuProntiContenitore.setVisible(false);

			}
		});
		menu.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				primiPiatti.setVisible(false);
				secondiPiatti.setVisible(false);
				contorniPiatti.setVisible(false);
				dessertPiatti.setVisible(false);
				bibiteContenitore.setVisible(false);
				menuProntiContenitore.setVisible(true);

			}
		});






		inviaOrdine.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				t.inviaOrdine();
				int numeroRighe=modello.getRowCount();
				for(int i=0;i<numeroRighe;i++){
					modello.removeRow(0);
				}		


				final JFrame val=new JFrame();
				val.setSize(300,100);

				JPanel p=new JPanel();

				val.add(p);

				JButton valutare=new JButton("Valuta");
				JButton nonvalutare=new JButton("Non valutare");

				p.add(valutare);
				p.add(nonvalutare);

				valutare.addMouseListener(new MouseAdapter(){
					Alimento a=null;
					public void mouseClicked(MouseEvent arg0){

						val.dispose();
						Iterator<Alimento> it=t.piatti.iterator();
						while(it.hasNext()){
							a=it.next();
							if(a.getCodificaPiatto()!=5){
								final JFrame valutazione=new JFrame();
								valutazione.setSize(800,300);

								JPanel p=new JPanel();
								double[] c = null;
								valutazione.add(p);
								JLabel label=new JLabel("Valutazione attuale del piatto:"+a.getNome()+" ");
								
								c=t.getValoriValutazione(a.getCodice());

								JTextField jtf=new JTextField(String.format("%1.2f", c[0]),12);
								jtf.setEditable(false);
								JLabel label1=new JLabel("inserire Valutazione : ");
								final JComboBox jcb=new JComboBox();

								jcb.addItem(1);
								jcb.addItem(2);
								jcb.addItem(3);
								jcb.addItem(4);
								jcb.addItem(5);
								jcb.addItem(6);
								jcb.addItem(7);
								jcb.addItem(8);
								jcb.addItem(9);
								jcb.addItem(10);


								JLabel label2=new JLabel("inserire Recensione: ");
								final JTextArea jtf2=new JTextArea("");
								jtf2.setPreferredSize(new Dimension(780,150));

								JButton inviaValutazione=new JButton("invia voto e commento");


								inviaValutazione.addMouseListener(new MouseAdapter(){
									public void mouseClicked(MouseEvent arg0){
										final int v=(Integer)jcb.getSelectedItem();
										String commento=jtf2.getText();
										Recensione r=new Recensione(a.getCodice(),v,commento,t.getUtenteTavolo().getNick(),t.getData());
										r.scriviRecensione();
										t.valuta(a.getCodice(),v);
										valutazione.dispose();//Per chiudere la finestra

									}


								});




								p.add(label);
								p.add(jtf);

								p.add(label1);
								p.add(jcb, BorderLayout.SOUTH);
								p.add(label2);
								p.add(jtf2);
								p.add(inviaValutazione);

								valutazione.setVisible(true);
								valutazione.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

							}

							else{
								if(it.hasNext())
									it.next();
							}
						}
					}


				});
				nonvalutare.addMouseListener(new MouseAdapter(){
					public void mouseClicked(MouseEvent arg0){
						val.dispose();
						t.piatti.clear();
					}
				});


				val.setVisible(true);
				val.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

			}


		});

		eliminaPiatto.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){

				final int row = ordine.getSelectedRow();
				if(row<0){

				}
				else{
					final Alimento a=new Alimento((String)modello.getValueAt(row, 0));
					final int quantita=(Integer)modello.getValueAt(row, 1);
					if(quantita>1){

						final JFrame rimozione=new JFrame();
						rimozione.setSize(300,300);

						JPanel p=new JPanel();

						rimozione.add(p);
						JLabel label=new JLabel("Quanti ne vuoi eliminare : ");
						final JTextField jtf=new JTextField("",12);

						JButton rim=new JButton("Rimuovi");


						rim.addMouseListener(new MouseAdapter(){
							public void mouseClicked(MouseEvent arg0){
								try{
									int quanti=Integer.parseInt(jtf.getText());
									if(quanti<=t.contaPresenze(a)){
										for(int i=0;i<quanti;i++){
											t.rimuoviAlimento(a.getNome());
										}
									}
									else{
										for(int i=0;i<t.contaPresenze(a);i++){
											t.rimuoviAlimento(a.getNome());
										}
									}

									String n=a.getNome();
									int q=quantita-quanti;
									double pr=((Double)modello.getValueAt(row, 2)-(a.getPrezzo()*quanti));
									((DefaultTableModel)ordine.getModel()).removeRow(row);
									if(q==0){
										rimozione.dispose();	
									}
									else{
										Object [] nuovaRiga={n,q,pr};
										modello.addRow(nuovaRiga);
										rimozione.dispose();
									}
								}catch(RuntimeException e){
									e.printStackTrace();
								}

							}


						});

						p.add(label);
						p.add(jtf);


						p.add(rim);
						rimozione.setVisible(true);
						rimozione.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


					}

					else{
						System.out.print(a.getNome());
						t.rimuoviAlimento(a.getNome());
						((DefaultTableModel)ordine.getModel()).removeRow(row);
					}
				}
			}
		});

		eliminaOrdine.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				int numeroRighe=modello.getRowCount();
				for(int i=0;i<numeroRighe;i++){
					modello.removeRow(0);
				}
				t.piatti.clear();
			}
		});
		
		
		

		tavolo.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				t.spegni(finale);
			}
		});

		tavolo.getContentPane().add(contenitore);
		tavolo.getContentPane().add(tipoPiatti,BorderLayout.WEST);
		tavolo.setVisible(true);
		tavolo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		tavolo.pack();

	
		
	}
	
	public int rigaDaAggiornare(DefaultTableModel modello,String nome){
		int r=0;
		int totRighe=modello.getRowCount();
		for(int i=0; i<=totRighe;i++){
			Object w=modello.getValueAt(i, 0);
			if(w.equals(nome)){
				r=i;
				break;
			}
		}
		return r;
		
	}
	
	public int[] rigaDaAggiornarePerRandom(DefaultTableModel modello,String nome){
		int []r={-1,-1,-1};
		int pos=0;
		int totRighe=modello.getRowCount();
		for(int i=0; i<totRighe;i++){
			Object w=modello.getValueAt(i, 0);
			if(w.equals(nome)){
				r[pos]=i;
				pos++;
			}
		}
		return r;
		
	}
}
class FinestraDescrizione extends JFrame{
	public FinestraDescrizione(int id){
		final JFrame f=new JFrame();
		JPanel p=new JPanel();
		
		JButton ok=new JButton("CHIUDI");
		
		
		ok.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				f.dispose();
			}
		});
		
		System.out.print(id);
		Alimento a=new Alimento(id);
		String descrA=a.getDescrizione();
		
		JTextArea desc=new JTextArea(descrA);
		JScrollPane scrollDescrizioni=new JScrollPane(desc,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		desc.setPreferredSize(new Dimension(1000,400));
		
		scrollDescrizioni.setPreferredSize(new Dimension(990,200));
		
		
		desc.setEditable(false);
		
		
		
		p.add(scrollDescrizioni);
		p.add(ok);
		f.add(p);
		f.setPreferredSize(new Dimension(1000,300));
		
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		f.pack();
	}
}
class FinestraRecensioni extends JFrame{
	
	public FinestraRecensioni(int idPiatto){
		final JFrame f=new JFrame();
		JPanel panSfondo=new JPanel(new BorderLayout());
		JPanel p=new JPanel();
		JButton ok=new JButton("CHIUDI");
		ok.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				f.dispose();
			}
		});
		

		Recensione r=new Recensione(idPiatto);
		LinkedList<Recensione> recensioni=r.getRecensioni();
		int quante=r.quanteRecensioni();
		
		JPanel [] rece=new JPanel[quante];
		JLabel [] nome=new JLabel[quante];
		JLabel [] voto=new JLabel[quante];
		JLabel [] recensi=new JLabel[quante];

		p.setPreferredSize(new Dimension(900,250));	
		for (int i=0;i<quante-1;i++){
			Recensione a=recensioni.getFirst();
			rece[i]=new JPanel(new BorderLayout());
			nome[i]=new JLabel("Nome: "+a.getNomeUtente());
			voto[i]=new JLabel("voto: "+a.getVoto());
			
			recensi[i]=new JLabel("Recensione:\n"+a.getRecensione());
			rece[i].setPreferredSize(new Dimension(850,100));
			rece[i].add(nome[i],BorderLayout.WEST);
			rece[i].add(voto[i],BorderLayout.EAST);
			rece[i].add(recensi[i],BorderLayout.SOUTH);
			p.add(rece[i]);
			recensioni.removeFirst();
		}
		
		panSfondo.setPreferredSize(new Dimension(900,300));
		
		
		JScrollPane scrollDescrizioni=new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scrollDescrizioni.setPreferredSize(new Dimension(100,100));
		
		panSfondo.add(p,BorderLayout.NORTH);
		panSfondo.add(ok,BorderLayout.SOUTH);
		f.add(panSfondo);
		f.setPreferredSize(new Dimension(900,300));
		
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		f.pack();
	}
}